//
// Created by dell on 2024/1/25.
//

#include "studio_geo_coll.h"
studio_geo_coll::studio_geo_coll(studio_point p)
{
    m_type = enum_geometry_type::egtPoint;
    m_point = p;
}

studio_geo_coll::studio_geo_coll(studio_multi_point mp)
{
    m_type = enum_geometry_type::egtMultiPoint;
    m_points = mp;
}

studio_geo_coll::studio_geo_coll(studio_line l)
{
    m_type = enum_geometry_type::egtLineString;
    m_line = l;
}

studio_geo_coll::studio_geo_coll(studio_multi_line ml)
{
    m_type = enum_geometry_type::egtMultiLineString;
    m_lines = ml;
}

studio_geo_coll::studio_geo_coll(studio_poly p)
{
    m_type = enum_geometry_type::egtPolygon;
    m_poly = p;
}

studio_geo_coll::studio_geo_coll(studio_multi_poly mp)
{
    m_type = enum_geometry_type::egtMultiPolygon;
    m_polys = mp;
}

void studio_geo_coll::add(studio_point p)
{
    if (enum_geometry_type::egtInvalid == m_type)
    {
        m_type = enum_geometry_type::egtPoint;
    }
    else
    {
        m_type = enum_geometry_type::egtCompositeType;
    }

    m_point = p;
}

void studio_geo_coll::add(studio_multi_point mp)
{
    if (enum_geometry_type::egtInvalid == m_type)
    {
        m_type = enum_geometry_type::egtMultiPoint;
    }
    else
    {
        m_type = enum_geometry_type::egtCompositeType;
    }
    m_points = mp;
}

void studio_geo_coll::add(studio_line l)
{
    if (enum_geometry_type::egtInvalid == m_type)
    {
        m_type = enum_geometry_type::egtLineString;
    }
    else
    {
        m_type = enum_geometry_type::egtCompositeType;
    }
    m_line = l;
}

void studio_geo_coll::add(studio_multi_line ml)
{
    if (enum_geometry_type::egtInvalid == m_type)
    {
        m_type = enum_geometry_type::egtMultiLineString;
    }
    else
    {
        m_type = enum_geometry_type::egtCompositeType;
    }
    m_lines = ml;
}

void studio_geo_coll::add(studio_poly p)
{
    if (enum_geometry_type::egtInvalid == m_type)
    {
        m_type = enum_geometry_type::egtPolygon;
    }
    else
    {
        m_type = enum_geometry_type::egtCompositeType;
    }
    m_poly = p;
}

void studio_geo_coll::add(studio_multi_poly mp)
{
    if (enum_geometry_type::egtInvalid == m_type)
    {
        m_type = enum_geometry_type::egtMultiPolygon;
    }
    else
    {
        m_type = enum_geometry_type::egtCompositeType;
    }
    m_polys = mp;
}
